﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace KATAJAVI_SIA
{
    public partial class ConsultarMotos : Form
    {
        KATAJAVI call = new KATAJAVI();
        DataClassesDataContext BEDE = new DataClassesDataContext();
        IEnumerable<MOTO> lista1;
        IEnumerable<ATENCION> lista2;

        public ConsultarMotos()
        {
            InitializeComponent();
        }

        private void NoVacios()
        {
            if (dgv_MotocicletasLista.RowCount == 0)
            {
                tbx_BusquedaDato.Enabled = false;
                btn_BuscarCliente.Enabled = false;
                button1.Enabled = false;
            }
        }

        private void Llenar()
        {
            lista1 = BEDE.MOTO.Where(a => a.softdelete == 1).OrderBy(a => a.id_motocicleta);
            foreach (MOTO aux in lista1)
            {

                CLIENTE owner = BEDE.CLIENTE.Where(a => a.rut_cliente == aux.rut_cliente).First();
                MARCA_MOTO mark = BEDE.MARCA_MOTO.Where(b => b.id_marca == aux.id_marca).First();
                string estado = "";
                int j = 0;
                lista2 = BEDE.ATENCION.OrderBy(a => a.cod_atencion);
                foreach (ATENCION aux2 in lista2)
                {
                    if (aux2.id_motocicleta == aux.id_motocicleta)
                    {
                        estado = aux2.ESTADO_ATENCION1.NombreEstado.ToString();
                        j++;
                    }
                }
                if (j == 0) { estado = "SIN ATENCIONES"; }
                dgv_MotocicletasLista.Rows.Add(aux.patente, aux.rut_cliente.ToString(), owner.nombre, mark.Nombre, aux.modelo.Trim(), aux.color, estado);
            }
        }

        private int FiltrarGrid(string buscado)
        {
            dgv_MotocicletasLista.Rows.Clear();
            lista1 = BEDE.MOTO.Where(a => a.softdelete == 1);
            int aa = 0;
            foreach (MOTO aux in lista1)
            {
                if (aux.patente.ToString().Contains(buscado) | aux.CLIENTE.nombre.Contains(buscado) | aux.modelo.Contains(buscado) | aux.rut_cliente.ToString().Contains(buscado) | aux.MARCA_MOTO.Nombre.Contains(buscado))
                {
                    CLIENTE owner = BEDE.CLIENTE.Where(a => a.rut_cliente == aux.rut_cliente).First();
                    MARCA_MOTO mark = BEDE.MARCA_MOTO.Where(b => b.id_marca == aux.id_marca).First();
                    string estado = "";
                    int j = 0;
                    lista2 = BEDE.ATENCION.OrderBy(a => a.cod_atencion);
                    foreach (ATENCION aux2 in lista2)
                    {
                        if (aux2.id_motocicleta == aux.id_motocicleta)
                        {
                            estado = aux2.ESTADO_ATENCION1.NombreEstado.ToString();
                            j++;
                        }
                    }
                    if (j == 0) { estado = "SIN ATENCIONES"; }
                    dgv_MotocicletasLista.Rows.Add(aux.patente, aux.rut_cliente.ToString(), owner.nombre, mark.Nombre, aux.modelo.Trim(), aux.color, estado);
                    aa++;
                }
            }
            if (aa == 0) { return 0; }
            else { return 1; }
        }

        private void ConsultarMotos_Load(object sender, EventArgs e)
        {
            Llenar();
        }

        private void btn_BuscarCliente_Click(object sender, EventArgs e)
        {
            if (tbx_BusquedaDato.Text.Length >= 3)
            {
                tbx_BusquedaDato.Text = tbx_BusquedaDato.Text.Trim();
                int a = call.BuscarEnGrid(tbx_BusquedaDato.Text, dgv_MotocicletasLista);
                if (a == 0)
                {
                    int b = FiltrarGrid(tbx_BusquedaDato.Text.Trim());
                    if (b == 0)
                    {
                        MessageBox.Show("No se encontro ningun usuario asociado al dato indicado.", "RESULTADO DE LA BUSQUEDA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    else { MessageBox.Show("No se encontró un resultado preciso. Se filtraron los registros, usando la cadena indicada como referencia.", "BUSQUEDA FILTRADA.", MessageBoxButtons.OK, MessageBoxIcon.Information); }
                }
            }
            else
            {
                if (tbx_BusquedaDato.Text == "") { errorProvider1.SetError(tbx_BusquedaDato, "Ingrese un dato para iniciar la búsqueda."); }
                else { errorProvider1.SetError(tbx_BusquedaDato, "El texto ingresado es muy corto para una búsqueda efectiva.\n(Se requieren mínimo 3 caracteres para la busqueda)."); }
            }
        }

        private void tbx_PatenteBuscar_TextChanged(object sender, EventArgs e)
        {
            if (tbx_BusquedaDato.Text.Length >= 3) { errorProvider1.Clear(); }
            if (tbx_BusquedaDato.Text == "")
            {
                dgv_MotocicletasLista.Rows.Clear();
                Llenar();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dgv_MotocicletasLista.Rows.Clear();
            Llenar();
        }
    }
}
